#ifndef DISPLAYER_HH_
# define DISPLAYER_HH_

#include <boost/shared_ptr.hpp>
#include <tbb/concurrent_hash_map.h>

# include "../map/map.hh"

# include <SDL/SDL.h>

# include "../camera/camera.hh"
# include "object.hh"
# include "../interfaces/displayable.hh"

# include "../gui/text-img.hh"

# include <map>
# include <list>

class Displayer
{
public:
  Displayer (SDL_Surface* screen, Camera* cam);

  void draw (const Map* m,
	     const tbb::concurrent_hash_map<int, boost::shared_ptr<Object> >* o,
	     const std::list<Blitable*>& t,
	     const tbb::concurrent_hash_map<int, boost::shared_ptr<Displayable> >& d);

protected:
  SDL_Surface* screen_;
  Camera* cam_;
};

#endif /// !DISPLAYER_HH_
